package com.headfirst.BehaviorMode.strategy.version1;

/**
 * 所有鸭子类的超类。
 * 
 * 所有具体类型的鸭子都有特定的外观，但是这些具体类型的鸭子的外观是什么样的，在超类中无法得知，需要定义一个抽象的display方法，
 * 由具体的子类去覆盖实现
 * 
 * 所有具体类型的鸭子都会游泳，直接由超类中定义swim方法并实现，所有的子类集成Duck就具有了游泳的方法
 * @author sunhongguang
 * @create 2022-01-09-21:07
 */
public abstract class Duck {

    /**
     * 外观
     */
    public abstract void display();

    /**
     * 游泳
     */
    public void swim(){
        System.out.println("游泳...");
    }

    /**
     * 叫声
     */
    public void quack(){
        System.out.println("呱呱呱...");
    }

    /**
     * 飞翔
     */
    public void fly(){
        System.out.println("飞翔...");
    }

    
}
